@@ -39,8 +39,10 @@ TEMP_FILE_IPV6="/tmp/cloudflare-ipv6"
3939# Validate IPv4 CIDR addresses
4040validateIPv4 () {
4141 regex=" ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$"
42- while read ip
42+ while IFS= read -r ip || [[ -n " $ip " ]]
4343 do
44+ # Skip empty lines
45+ [[ -z " $ip " ]] && continue
4446 if [[ ! " $ip " =~ $regex ]]; then
4547 echo " FAILED. Reason: Invalid IPv4 address [$ip ]"
4648 exit 1
@@ -51,8 +53,10 @@ validateIPv4() {
5153# Validate IPv6 CIDR addresses
5254validateIPv6 () {
5355 regex="^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))?$"
54- while read ip
56+ while IFS= read -r ip || [[ -n " $ip " ]]
5557 do
58+ # Skip empty lines
59+ [[ -z " $ip " ]] && continue
5660 if [[ ! " $ip " =~ $regex ]]; then
5761 echo " FAILED. Reason: Invalid IPv6 address [$ip ]"
5862 exit 1
8185fi
8286
8387# Validate IP addresses
88+ echo " Validating downloaded IP addresses..."
8489validateIPv4
8590validateIPv6
91+ echo " ✓ IP validation completed successfully"
92+
93+ # Count downloaded IPs for verification
94+ IPV4_COUNT=$( wc -l < " $TEMP_FILE_IPV4 " )
95+ IPV6_COUNT=$( wc -l < " $TEMP_FILE_IPV6 " )
96+ echo " Downloaded $IPV4_COUNT IPv4 ranges and $IPV6_COUNT IPv6 ranges"
97+
98+ # Debug: Show what was actually downloaded
99+ echo " Debug: IPv4 ranges downloaded:"
100+ cat " $TEMP_FILE_IPV4 "
101+ echo " Debug: IPv6 ranges downloaded:"
102+ cat " $TEMP_FILE_IPV6 "
86103
87104# Generate the new config file with the latest IPs
88105echo " # CloudFlare IP addresses" > $CLOUDFLARE_NGINX_CONFIG
89106echo " # > IPv4" >> $CLOUDFLARE_NGINX_CONFIG
90107
91- while read ip
108+ IPV4_PROCESSED=0
109+ while IFS= read -r ip || [[ -n " $ip " ]]
92110do
111+ # Skip empty lines
112+ [[ -z " $ip " ]] && continue
93113 echo " set_real_ip_from $ip ;" >> $CLOUDFLARE_NGINX_CONFIG
114+ (( IPV4 _PROCESSED++ ))
94115done< " $TEMP_FILE_IPV4 "
95116
96117echo " # > IPv6" >> $CLOUDFLARE_NGINX_CONFIG
97118
98- while read ip
119+ IPV6_PROCESSED=0
120+ while IFS= read -r ip || [[ -n " $ip " ]]
99121do
122+ # Skip empty lines
123+ [[ -z " $ip " ]] && continue
100124 echo " set_real_ip_from $ip ;" >> $CLOUDFLARE_NGINX_CONFIG
125+ (( IPV6 _PROCESSED++ ))
101126done < " $TEMP_FILE_IPV6 "
102127
103128echo " real_ip_header CF-Connecting-IP;" >> $CLOUDFLARE_NGINX_CONFIG
104129
130+ echo " Processed $IPV4_PROCESSED IPv4 ranges and $IPV6_PROCESSED IPv6 ranges into config file"
131+
105132# Clean-up temporary files
106133rm $TEMP_FILE_IPV4 $TEMP_FILE_IPV6
107134
0 commit comments