AWSParser/bin/awsparser.dart
2024-11-23 01:50:34 -07:00

51 lines
1.4 KiB
Dart

import 'dart:convert';
import 'dart:io';
import 'package:awsparser/awsparser.dart';
import 'package:dio/dio.dart';
Future<void> main(List<String> arguments) async {
print(">> WELCOME <<");
print(">> Downloading AWS IP Range list..");
// First, download the AWS IP Ranges config
Dio dio = new Dio();
Response<dynamic> awsResponse =
await dio.get("https://ip-ranges.amazonaws.com/ip-ranges.json");
if (awsResponse.statusCode! == 200) {
// Get body as string
AWSJson aws = AWSJson.parse(awsResponse.data as Map<String, dynamic>);
print(">> Generating IP blocklist");
String blockListv4 = "";
String blockListv6 = "";
for (var entry in aws.prefixes) {
blockListv4 += "${entry.ip_prefix} AWS IPv4\n";
}
for (var entry in aws.ipv6_prefixes) {
blockListv6 += "${entry.ip_prefix} AWS IPv6\n";
}
print(">> Stripping trailing newline");
blockListv4 = blockListv4.trim();
blockListv6 = blockListv6.trim();
print(">> Report complete");
print(">> Saving to ipv4_ranges.txt");
File fi = File("ipv4_ranges.txt");
await fi.open(mode: FileMode.write);
await fi.writeAsString(blockListv4);
print(">> Saving to ipv6_ranges.txt");
fi = File("ipv6_ranges.txt");
await fi.open(mode: FileMode.write);
await fi.writeAsString(blockListv6);
print(">> Goodbye!");
} else {
print("/!\\ FATAL ERROR /!\\ Failed to download the IP Range list");
}
}