#!/bin/bash # BestCDN C++ Tester Runner Script # Builds and runs the high-performance C++ tester with optional provider selection set -e echo "๐Ÿš€ BestCDN C++ High-Performance Tester" echo "======================================" # Show usage if help is requested if [[ "$1" == "-h" || "$1" == "--help" ]]; then echo "Usage: $0 [provider1] [provider2] ..." echo "" echo "Available providers:" echo " cloudflare - Test Cloudflare IPs" echo " fastly - Test Fastly IPs" echo " edgeone - Test EdgeOne (Tencent Cloud) IPs" echo " esa - Test ESA (Alibaba Cloud) IPs" echo "" echo "Examples:" echo " $0 # Test all providers" echo " $0 edgeone # Test only EdgeOne" echo " $0 edgeone cloudflare # Test EdgeOne and Cloudflare" echo "" exit 0 fi # Check if C++ tester is built if [ ! -f "src/cpp/bestcdn_tester" ]; then echo "๐Ÿ”จ C++ tester not found. Building..." chmod +x build_cpp.sh ./build_cpp.sh if [ $? -ne 0 ]; then echo "โŒ Build failed. Exiting." exit 1 fi fi # Determine which providers to check/test if [ $# -gt 0 ]; then SELECTED_PROVIDERS=("$@") echo "๐ŸŽฏ Selected providers: ${SELECTED_PROVIDERS[*]}" else SELECTED_PROVIDERS=(cloudflare fastly edgeone esa) echo "๐ŸŒ Testing all available providers" fi # Check if IP lists exist for selected providers missing_files=() for provider in "${SELECTED_PROVIDERS[@]}"; do if [ ! -f "ip_lists/${provider}.txt" ]; then missing_files+=("ip_lists/${provider}.txt") fi done if [ ${#missing_files[@]} -gt 0 ]; then echo "โš ๏ธ Warning: Missing IP list files:" for file in "${missing_files[@]}"; do echo " - $file" done echo "" echo "Please add your IP lists to the ip_lists/ directory before running." echo "Each file should contain one IP per line or CIDR ranges." echo "" read -p "Continue anyway? (y/N): " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 1 fi fi # Create results directory mkdir -p results # Run the C++ tester with selected providers echo "" echo "๐Ÿงช Starting IP accessibility tests..." echo " Real-time results will be displayed below" echo " Press Ctrl+C to stop" echo "" cd src/cpp if [ $# -gt 0 ]; then ./bestcdn_tester "$@" else ./bestcdn_tester fi cd ../.. echo "" echo "โœ… Testing completed!" echo "๐Ÿ“Š Check the results/ directory for output files" echo "" echo "๐Ÿ’ก To add geolocation data to results:" echo " ./enhance_results.sh"