#!/usr/bin/env bash

#
#  Licensed to the Apache Software Foundation (ASF) under one or more
#  contributor license agreements.  See the NOTICE file distributed with
#  this work for additional information regarding copyright ownership.
#  The ASF licenses this file to You under the Apache License, Version 2.0
#  (the "License"); you may not use this file except in compliance with
#  the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#

shopt -s nocasematch
set -u # nounset
set -e # errexit
set -E # errtrap
set -o pipefail

#
# Downloads sample pcap files to the data directory
#

function help {
  echo " "
  echo "usage: ${0}"
  echo "    --data-path                    [REQUIRED] The pcap data path"
  echo "    -h/--help                      Usage information."
  echo " "
  echo " "
}

DATA_PATH=

# Handle command line options
for i in "$@"; do
  case $i in
  #
  # DATA_PATH
  #
  #   --data-path
  #
    --data-path=*)
      DATA_PATH="${i#*=}"
      shift # past argument=value
    ;;

  #
  # -h/--help
  #
    -h | --help)
      help
      exit 0
      shift # past argument with no value
    ;;

  #
  # Unknown option
  #
    *)
      UNKNOWN_OPTION="${i#*=}"
      echo "Error: unknown option: $UNKNOWN_OPTION"
      help
    ;;
  esac
done

if [[ -z "$DATA_PATH" ]]; then
  echo "DATA_PATH must be passed"
  exit 1
fi

echo "Running download_sample_pcaps with "
echo "DATA_PATH = $DATA_PATH"
echo "==================================================="

for folder in nitroba example-traffic ssh ftp radius rfb; do
  if [[ ! -d "${DATA_PATH}"/${folder} ]]; then
    mkdir -p "${DATA_PATH}"/${folder}
  fi
done

if [[ ! -f "${DATA_PATH}"/example-traffic/exercise-traffic.pcap ]]; then
  wget https://github.com/zeek/try-zeek/raw/master/manager/static/pcaps/exercise_traffic.pcap -O "${DATA_PATH}"/example-traffic/exercise-traffic.pcap
fi

if [[ ! -f "${DATA_PATH}"/nitroba/nitroba.pcap ]]; then
  wget http://downloads.digitalcorpora.org/corpora/network-packet-dumps/2008-nitroba/nitroba.pcap -O "${DATA_PATH}"/nitroba/nitroba.pcap
fi

if [[ ! -f "${DATA_PATH}"/ssh/ssh.pcap ]]; then
  wget https://github.com/zeek/try-zeek/raw/master/manager/static/pcaps/ssh.pcap -O "${DATA_PATH}"/ssh/ssh.pcap
fi

if [[ ! -f "${DATA_PATH}"/ftp/ftp.pcap ]]; then
  wget https://github.com/markofu/pcaps/blob/master/PracticalPacketAnalysis/ppa-capture-files/ftp.pcap?raw=true -O "${DATA_PATH}"/ftp/ftp.pcap
fi

if [[ ! -f "${DATA_PATH}"/radius/radius_localhost.pcapng ]]; then
  wget https://github.com/EmpowerSecurityAcademy/wireshark/blob/master/radius_localhost.pcapng?raw=true -O "${DATA_PATH}"/radius/radius_localhost.pcapng
fi

if [[ ! -f "${DATA_PATH}"/rfb/rfb.pcap ]]; then
  wget https://github.com/kholia/my-pcaps/blob/master/VNC/07-vnc-openwall-3.7.pcap?raw=true -O "${DATA_PATH}"/rfb/rfb.pcap
fi

