dam-spam/modules/check-aws.php
2025-12-10 05:14:44 -07:00

133 lines
No EOL
4.2 KiB
PHP

<?php
if ( !defined( 'ABSPATH' ) ) {
status_header( 404 );
exit;
}
// last updated from https://ip-ranges.amazonaws.com/ip-ranges.json on 12/9/2025
class dam_spam_check_aws extends dam_spam_module {
public $searchname = 'Amazon AWS Server Allow';
public $searchlist = array(
'Amazon AWS Server Allow',
array( '3.0.0.0', '3.255.255.255' ),
array( '13.32.0.0', '13.59.255.255' ),
array( '13.112.0.0', '13.127.255.255' ),
array( '13.200.0.0', '13.255.255.255' ),
array( '15.0.0.0', '15.255.255.255' ),
array( '16.0.0.0', '16.255.255.255' ),
array( '18.0.0.0', '18.255.255.255' ),
array( '23.20.0.0', '23.23.255.255' ),
array( '32.236.0.0', '32.237.255.255' ),
array( '35.0.0.0', '35.255.255.255' ),
array( '40.0.0.0', '40.255.255.255' ),
array( '43.193.0.0', '43.218.255.255' ),
array( '46.51.128.0', '46.51.255.255' ),
array( '47.128.0.0', '47.131.255.255' ),
array( '50.16.0.0', '50.19.255.255' ),
array( '50.112.0.0', '50.112.255.255' ),
array( '51.0.0.0', '51.255.255.255' ),
array( '52.0.0.0', '52.255.255.255' ),
array( '54.0.0.0', '54.255.255.255' ),
array( '56.0.0.0', '56.255.255.255' ),
array( '63.32.0.0', '63.35.255.255' ),
array( '64.252.64.0', '64.252.127.255' ),
array( '66.7.0.0', '66.7.31.255' ),
array( '69.107.0.0', '69.107.31.255' ),
array( '71.131.192.0', '71.131.255.255' ),
array( '76.223.0.0', '76.223.255.255' ),
array( '77.112.0.0', '77.115.255.255' ),
array( '96.0.0.0', '96.0.127.255' ),
array( '98.131.0.0', '98.131.255.255' ),
array( '99.0.0.0', '99.255.255.255' ),
array( '107.20.0.0', '107.23.255.255' ),
array( '108.175.0.0', '108.175.255.255' ),
array( '122.248.192.0', '122.248.255.255' ),
array( '136.18.0.0', '136.18.255.255' ),
array( '139.56.0.0', '139.56.63.255' ),
array( '141.231.0.0', '141.231.255.255' ),
array( '150.222.0.0', '150.222.255.255' ),
array( '150.247.0.0', '150.247.255.255' ),
array( '151.148.0.0', '151.148.255.255' ),
array( '155.146.0.0', '155.146.255.255' ),
array( '159.248.0.0', '159.248.255.255' ),
array( '161.188.0.0', '161.188.255.255' ),
array( '174.129.0.0', '174.129.255.255' ),
array( '175.41.128.0', '175.41.255.255' ),
array( '176.32.64.0', '176.32.127.255' ),
array( '176.34.0.0', '176.34.255.255' ),
array( '177.71.128.0', '177.71.255.255' ),
array( '180.163.57.0', '180.163.57.255' ),
array( '184.72.0.0', '184.73.255.255' ),
array( '184.169.128.0', '184.169.255.255' ),
array( '185.48.120.0', '185.48.121.255' ),
array( '192.31.212.0', '192.31.212.255' ),
array( '204.246.164.0', '204.246.191.255' ),
array( '205.251.192.0', '205.251.255.255' ),
array( '216.137.32.0', '216.137.63.255' ),
array( '216.182.224.0', '216.182.255.255' ),
array( '216.198.0.0', '216.198.255.255' ),
array( '216.244.0.0', '216.244.127.255' )
);
public function process( $ip, &$stats = array(), &$options = array(), &$post = array() ) {
$ip6ranges = array(
'2600:1f00::/24',
'2600:1f01::/32',
'2600:1f11::/32',
'2600:1f12::/32',
'2600:1f13::/32',
'2600:1f14::/32',
'2600:1f16::/32',
'2600:1f18::/33',
'2600:1f1c::/32',
'2600:1f1e::/32',
'2600:1f24::/32',
'2600:1f26::/32',
'2600:1f28::/32',
'2600:1f2a::/32',
'2600:1f2c::/32',
'2600:1f2e::/32',
'2600:1f30::/32',
'2600:1f32::/32',
'2600:1f34::/32',
'2600:1f36::/32',
'2600:1f38::/32',
'2600:1f3a::/32',
'2600:1f48::/32',
'2600:1f60::/32',
'2600:1f61::/32',
'2600:1f62::/32',
'2600:1f68::/32',
'2600:1f69::/32',
'2600:1f70::/32',
'2600:9000::/28'
);
$aws_found = false;
if ( strpos( $ip, '.' ) !== false ) {
$ipt = dam_spam_module::ip2numstr( $ip );
foreach ( $this->searchlist as $c ) {
if ( is_array( $c ) ) {
list( $ips, $ipe ) = $c;
$ips = dam_spam_module::ip2numstr( $ips );
$ipe = dam_spam_module::ip2numstr( $ipe );
if ( $ipt >= $ips && $ipt <= $ipe ) {
$aws_found = true;
break;
}
}
}
} elseif ( strpos( $ip, ':' ) !== false && strlen( $ip ) >= 9 ) {
$ip = strtolower( $ip );
foreach ( $ip6ranges as $ip6 ) {
if ( substr( $ip6, 0, 9 ) == substr( $ip, 0, 9 ) ) {
$aws_found = true;
break;
}
}
}
if ( !$aws_found ) {
return false;
}
return $this->searchname . ': ' . $ip;
}
}