diff --git a/docker/bench/run-ab.sh b/docker/bench/run-ab.sh index b26e648..815f1f3 100644 --- a/docker/bench/run-ab.sh +++ b/docker/bench/run-ab.sh @@ -17,6 +17,49 @@ CONCURRENCY=${CONCURRENCY:-$DEFAULT_CONCURRENCY} declare -a failed_urls +upload_to_hastebin() { + local file=$log_csv + local haste_url="https://haste.nixc.us/documents" + local response=$(curl -X POST -s --data-binary @"$file" $haste_url) + local key=$(echo $response | awk -F '"' '{print $4}') + if [[ ! -z "$key" ]]; then + echo "Uploaded to hastebin: https://haste.nixc.us/$key" + else + echo "Failed to upload to hastebin." + fi +} + +parse_to_csv() { + local input=$log_file + local output=/log/scan.csv + local output_dir=$(dirname "$output") + + # Ensure the output directory exists + if [[ ! -d "$output_dir" ]]; then + mkdir -p "$output_dir" || { echo "Failed to create directory $output_dir"; exit 1; } + fi + + # Check if input file exists + if [[ ! -f "$input" ]]; then + echo "Input file $input does not exist." + exit 1 + fi + + : > "$output" # Clear output file before appending + + grep -Eo 'https?://[^ ]+' "$input" | sort -u | while read -r url; do + local ttfb_line=$(grep -m 1 "$url" "$input" | grep 'TTFB test passed' | awk -F'Mean TTFB: ' '{print $2}') + local ab_line=$(grep -m 1 "$url" "$input" | grep 'ApacheBench test passed' | awk -F'Average time: ' '{print $2}') + local ttfb_test=${ttfb_line%ms.*} + local ab_test=${ab_line% milliseconds.*} + if [[ -n "$ttfb_test" || -n "$ab_test" ]]; then + if [[ -z "$ttfb_test" ]]; then ttfb_test="N/A"; fi + if [[ -z "$ab_test" ]]; then ab_test="N/A"; fi + echo "$url,$ttfb_test,$ab_test" >> "$output" + fi + done +} + process_sitemap() { IFS=',' read -r -a domains <<< "$TARGET_URLS" for domain in "${domains[@]}"; do @@ -70,6 +113,7 @@ run_ab() { fi } +echo Clearing old log file. log_file="/log/scan.log" mkdir -p $(dirname "$log_file") cat /dev/null > $"$log_file" @@ -97,52 +141,14 @@ for url in "${URLS[@]}"; do fi done -parse_to_csv() { - local input="$1" - local output="$2" - local output_dir=$(dirname "$output") +echo Clearing old csv file. +log_csv="/log/scan.csv" +mkdir -p $(dirname "$log_csv") +cat /dev/null > "$log_csv" - # Ensure the output directory exists - if [[ ! -d "$output_dir" ]]; then - mkdir -p "$output_dir" || { echo "Failed to create directory $output_dir"; exit 1; } - fi +parse_to_csv - # Check if input file exists - if [[ ! -f "$input" ]]; then - echo "Input file $input does not exist." - exit 1 - fi - - : > "$output" # Clear output file before appending - - grep -Eo 'https?://[^ ]+' "$input" | sort -u | while read -r url; do - local ttfb_line=$(grep -m 1 "$url" "$input" | grep 'TTFB test passed' | awk -F'Mean TTFB: ' '{print $2}') - local ab_line=$(grep -m 1 "$url" "$input" | grep 'ApacheBench test passed' | awk -F'Average time: ' '{print $2}') - local ttfb_test=${ttfb_line%ms.*} - local ab_test=${ab_line% milliseconds.*} - if [[ -n "$ttfb_test" || -n "$ab_test" ]]; then - if [[ -z "$ttfb_test" ]]; then ttfb_test="N/A"; fi - if [[ -z "$ab_test" ]]; then ab_test="N/A"; fi - echo "$url,$ttfb_test,$ab_test" >> "$output" - fi - done -} - - -parse_to_csv "/logs/scan.log" "/logs/scan.csv" - -upload_to_hastebin() { - local file=$1 - local haste_url="https://haste.nixc.us/documents" - local response=$(curl -X POST -s --data-binary @"$file" $haste_url) - local key=$(echo $response | awk -F '"' '{print $4}') - if [[ ! -z "$key" ]]; then - echo "Uploaded to hastebin: https://haste.nixc.us/$key" - else - echo "Failed to upload to hastebin." - fi -} -upload_to_hastebin "/logs/scan.csv" +upload_to_hastebin $log_csv if [ ${#failed_urls[@]} -gt 0 ]; then echo "Summary of failed URLs:" | tee -a "$log_file"