#!/bin/bash
#
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Copies all logs, screen-shots, crash dumps to Downloads folder.
# Help information about script usage.

. /usr/share/misc/shflags

DEFINE_boolean screenshots $FLAGS_FALSE \
    "To also collect saved screenshots"
DEFINE_boolean profile_data $FLAGS_FALSE \
    "To also collect profile web data and sync data"
DEFINE_boolean delete_autotest_data $FLAGS_FALSE \
    "Delete autotest results after copying if they exist"
FLAGS_HELP="USAGE: To collect logs and crash dumps: sh $0 [flags] \
    \nCollected data is zipped to tar.gz file with timestamp in /\/tmp."

# Parse command line
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"

home_dir=/home/chronos
log_dir=/tmp/diagnostic_logs
tar_path=/tmp

mkdir -p ${log_dir}
sudo rm -rf ${log_dir}/*

# Copying file with current timestamp and date.
date > ${log_dir}/timestamp.txt
echo "Copied current timestamp"

# Copying file with ping test result.
ping -c 5 google.com > ${log_dir}/ping_result.txt
echo "Copied ping test result"

# Run lsusb.
sudo lsusb -v > ${log_dir}/lsusb_output.txt &&
    echo "Obtaining lsusb information"

# Run lspci
sudo lspci -v > ${log_dir}/lspci_output.txt &&
    echo "Obtaining lspci information"

# Run iw list
sudo iw list > ${log_dir}/iw_list_output.txt &&
    echo "Obtaining network interface information"

# Copying lsb-release file.
sudo cp /etc/lsb-release ${log_dir}/lsb_release.txt &&
    echo "Copied lsb-release file with version information"

# Copying Consent To Send Stats file for client id.
sudo cp "${home_dir}/Consent To Send Stats" \
    ${log_dir}/consent_to_send_stats.txt &&
    echo "Copied Consent To Send Stats file with client id"

# Copying Local State file from /home/chronos.
sudo cp "${home_dir}/Local State" ${log_dir}/local_state.txt &&
    echo "Copied Local State file"

# Get the xrand output
DISPLAY=:0.0 /usr/bin/xrandr --verbose > ${log_dir}/xrand_output.txt &&
    echo "Dumped xrand output"

# Get modem status
/usr/bin/modem status > ${log_dir}/modem_status.txt &&
    echo "Dumped modem status"

# Get audio diagnostics
sudo /usr/bin/audio_diagnostics > ${log_dir}/audio_diagnostics.txt &&
    echo "Dumped audio diagnostics"

# Get trackpad user feedback
sudo /opt/google/touchpad/generate_userfeedback > \
    ${log_dir}/trackpad_feedback.dat &&
    echo "Dumped touchpad feedback"

# Get touchscreen user feedback
sudo /opt/google/touchscreen/touchscreen_feedback > \
    ${log_dir}/touchscreen_feedback.dat &&
    echo "Dumped touchscreen feedback"

# Get shill's service list
sudo /usr/bin/network_diagnostics --show-macs --flimflam > \
    ${log_dir}/shill_services_list.txt &&
    echo "Dumped shill's service list"

# Get the network diagnostics
sudo /usr/bin/network_diagnostics > ${log_dir}/network_diagnostics.txt &&
    echo "Dumped network_diagnostics"

# Copying mount-encrypted log
sudo cp /tmp/mount-encrypted.log ${log_dir} &&
    echo "Copied mount encryption log"

# Copy the stateful partition permission map.
sudo ls -alR /mnt/stateful_partition/ > ${log_dir}/stateful.txt &&
    echo "Copied list of entire stateful contents"

# List what is in the OEM folder
sudo ls -alR /opt/oem/ > ${log_dir}/oem.txt &&
    echo "Copied list of oem folder contents"

# Copy startup_manifest.json.txt if it exists
if [ -e /opt/oem/etc/startup_manifest.json ]; then
    cp /opt/oem/etc/startup_manifest.json ${log_dir}/startup_manifest.json.txt
fi

mkdir -p ${log_dir}/system_level_logs ${log_dir}/crashdumps
# Copying all logs under /var/log/.
sudo cp -r /var/log/* ${log_dir}/system_level_logs &&
    echo "Copied all system level logs from /var/log/"

user_home_dirs=($(mount | grep -o "/home/user/[[:alnum:]]\{,\}" \
                  | sed 's:/home/user/::'))

# Iterate through all of the mounted home directories and grab the
# requested data.
for ((i=0; i<${#user_home_dirs[@]}; ++i)); do
  user_log_dir=${log_dir}/user_$i
  user_home_dir=/home/user/${user_home_dirs[$i]}
  user_root_dir=/home/root/${user_home_dirs[$1]}
  mkdir ${user_log_dir}
  mkdir ${user_log_dir}/chrome_logs
  mkdir ${user_log_dir}/system_logs
  cp -r ${user_home_dir}/log/* ${user_log_dir}/chrome_logs
  sudo cp -r ${user_root_dir}/ ${user_log_dir}/system_logs
  if [ -e ${user_home_dir}/crash ]; then
    mkdir ${user_log_dir}/crash
    sudo cp -r ${user_home_dir}/crash/* ${user_log_dir}/crash &&
        echo "Copied user crash dumps"
  fi

  # Copying screen-shots if flag --screenshots is specified.
  if [ ${FLAGS_screenshots} -eq ${FLAGS_TRUE} ]; then
    cp -f ${user_home_dir}/Downloads/screenshot* ${user_log_dir}/ &&
        echo "Copied screen-shots"
  fi

  # Copying profile data if flag --profile_data is specified.
  if [ ${FLAGS_profile_data} -eq ${FLAGS_TRUE} ]; then
    cp -f "${user_home_dir}/Web Data" "${user_log_dir}/Web Data"
    cp -rf "${user_home_dir}/Sync Data" "${user_log_dir}/Sync Data" &&
        echo "Copied profile data"
  fi
done

# Copying crash dumps.
sudo cp -rf "/var/log/chrome/Crash Reports/" ${log_dir}/crashdumps/
spool_crash="/var/spool/crash/"
if [ -e ${spool_crash} ]; then
  sudo cp -rf ${spool_crash} ${log_dir}/crashdumps/ &&
      echo "Copied system crash dumps"
fi

# Dumping TPM token contents
pkcs11-tool -p 111111 -O --module libchaps.so \
    > ${log_dir}/tpm_token_contents.txt 2>&1 && echo "Dumped TPM token contents"

# Dumping Cryptohomed/TPM ownership status
cryptohome --action=status > ${log_dir}/cryptohomed_status.txt 2>&1 &&
    echo "Dumped cryptohomed status"

# Dumping Cryptohome PKCS11 status
cryptohome --action=pkcs11_token_status \
    >> ${log_dir}/cryptohomed_status.txt 2>&1 &&
    echo "Dumped cryptohomed pkcs11 status"

# Dumping firmware log if it exists
if [ -r /sys/firmware/log ]; then
  cat /sys/firmware/log > ${log_dir}/firmware_log.txt
fi

# Dumping firmware event log
if [ -n "$(sudo mosys -t | grep -o eventlog)" ]; then
  sudo mosys -k eventlog list > ${log_dir}/firmware_event_log.txt
fi

# Copy device and user policy data.
policy_dir="${log_dir}/policy_data/"
mkdir -p ${policy_dir}
device_policy="/var/lib/whitelist/"
users_policy="/home/root/*/session_manager/policy/"
if [ -e ${device_policy} ]; then
  sudo cp -rf ${device_policy} ${policy_dir} &&
      echo "Copied device whitelist"
fi
if [ -e ${users_policy} ]; then
  sudo cp -rf ${users_policy} ${policy_dir} &&
      echo "Copied user policy"
fi

# Copying autotest results if they exist
if [ -d "/usr/local/autotest/results" ]; then
  # rsync does not exist on normal images, but the autotest directory
  # will also not be found on a normal image.
  sudo rsync -a --exclude='*/sysinfo*' "/usr/local/autotest/results" \
      "${log_dir}/autotest"
  echo "Copied autotest results"
  if [ ${FLAGS_delete_autotest_data} -eq ${FLAGS_TRUE} ]; then
    rm -rf "/usr/local/autotest/results"
  fi
fi

# If we have the synaptics touchpad driver grab those additional files
if [ -e "/opt/Synaptics/bin/syncontrol" ]; then
  mkdir -p ${log_dir}/synaptic_touchpad
  sudo rm /home/chronos/user/SynDiag*
  # We can only query syncontrol if it is running
  if [ -e "/var/run/dbus/synaptics_bus_socket" ]; then
    DISPLAY=:0 /opt/Synaptics/bin/syncontrol diag
    sudo cp /home/chronos/user/SynDiag* ${log_dir}/synaptic_touchpad
  fi
fi

# Grabbing network profiles.
echo "Copying network profiles"
network_profiles_dir="${log_dir}/network_profiles"
mkdir -p ${network_profiles_dir}
for manager in shill; do
  global_profile="/var/cache/${manager}/"
  user_profile="/var/run/${manager}/user_profiles/chronos/"
  for profile in ${global_profile} ${user_profile}; do
    test -e "${profile}" && \
      sudo cp -rf --parents "${profile}" "${network_profiles_dir}"
  done
done

# Grabbing preserved memory.
if [ -e "/dev/pstore/console-ramoops" ]; then
  echo "Copying preserved memory"
  sudo cp /dev/pstore/console-ramoops "${log_dir}/console-ramoops.txt"
fi

# Compressing the log folder with all collected files.
currentdate=$(date +%m%d%y-%H%M%S)
log_file_name=log-${currentdate}.tar.gz
sudo tar czf ${tar_path}/${log_file_name} -C $(dirname ${log_dir}) \
    $(basename ${log_dir})/
sudo rm -rf ${log_dir}/

archive_path=${tar_path}/${log_file_name}
# If only one user is logged in, copy it to the download folder
if [ ${#user_home_dirs[@]} -eq 1 ]; then
  downloads="/home/user/${user_home_dirs[0]}/Downloads"
  sudo mv ${archive_path} ${downloads}
  sudo chmod 755 ${downloads}/${log_file_name}
  echo "Log file (${log_file_name}) are available in Downloads"
else
  echo "Log files are available at ${archive_path}"
fi
echo "For all flag options, run the script with --help or -h flag."
